Download this file

1749 lines (1749 with data), 132.0 kB

{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "machine_shape": "hm"
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "8XnVMPBXmtRa"
      },
      "source": [
        "# TensorNetworks in Neural Networks.\n",
        "\n",
        "Here, we have a small toy example of how to use a TN inside of a fully connected neural network.\n",
        "\n",
        "First off, let's install tensornetwork"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "7HGRsYNAFxME"
      },
      "source": [
        "# !pip install tensornetwork\n",
        "\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "import tensorflow as tf\n",
        "# Import tensornetwork\n",
        "import tensornetwork as tn\n",
        "import random\n",
        "import time\n",
        "# Set the backend to tesorflow\n",
        "# (default is numpy)\n",
        "tn.set_default_backend(\"tensorflow\")\n",
        "np.random.seed(42)\n",
        "random.seed(42)\n",
        "tf.random.set_seed(42)"
      ],
      "execution_count": 110,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "g1OMCo5XmrYu"
      },
      "source": [
        "# TensorNetwork layer definition\n",
        "\n",
        "Here, we define the TensorNetwork layer we wish to use to replace the fully connected layer. Here, we simply use a 2 node Matrix Product Operator network to replace the normal dense weight matrix.\n",
        "\n",
        "We TensorNetwork's NCon API to keep the code short."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "wvSMKtPufnLp"
      },
      "source": [
        "class TNLayer(tf.keras.layers.Layer):\n",
        "\n",
        "  def __init__(self):\n",
        "    super(TNLayer, self).__init__()\n",
        "    # Create the variables for the layer.\n",
        "    self.a_var = tf.Variable(tf.random.normal(shape=(32, 32, 2),\n",
        "                                              stddev=1.0/32.0),\n",
        "                             name=\"a\", trainable=True)\n",
        "    self.b_var = tf.Variable(tf.random.normal(shape=(32, 32, 2),\n",
        "                                              stddev=1.0/32.0),\n",
        "                             name=\"b\", trainable=True)\n",
        "    self.bias = tf.Variable(tf.zeros(shape=(32, 32)),\n",
        "                            name=\"bias\", trainable=True)\n",
        "\n",
        "  def call(self, inputs):\n",
        "    # Define the contraction.\n",
        "    # We break it out so we can parallelize a batch using\n",
        "    # tf.vectorized_map (see below).\n",
        "    def f(input_vec, a_var, b_var, bias_var):\n",
        "      # Reshape to a matrix instead of a vector.\n",
        "      input_vec = tf.reshape(input_vec, (32, 32))\n",
        "\n",
        "      # Now we create the network.\n",
        "      a = tn.Node(a_var)\n",
        "      b = tn.Node(b_var)\n",
        "      x_node = tn.Node(input_vec)\n",
        "      a[1] ^ x_node[0]\n",
        "      b[1] ^ x_node[1]\n",
        "      a[2] ^ b[2]\n",
        "\n",
        "      # The TN should now look like this\n",
        "      #   |     |\n",
        "      #   a --- b\n",
        "      #    \\   /\n",
        "      #      x\n",
        "\n",
        "      # Now we begin the contraction.\n",
        "      c = a @ x_node\n",
        "      result = (c @ b).tensor\n",
        "\n",
        "      # To make the code shorter, we also could've used Ncon.\n",
        "      # The above few lines of code is the same as this:\n",
        "      # result = tn.ncon([x, a_var, b_var], [[1, 2], [-1, 1, 3], [-2, 2, 3]])\n",
        "\n",
        "      # Finally, add bias.\n",
        "      return result + bias_var\n",
        "\n",
        "    # To deal with a batch of items, we can use the tf.vectorized_map\n",
        "    # function.\n",
        "    # https://www.tensorflow.org/api_docs/python/tf/vectorized_map\n",
        "    result = tf.vectorized_map(\n",
        "        lambda vec: f(vec, self.a_var, self.b_var, self.bias), inputs)\n",
        "    return tf.nn.relu(tf.reshape(result, (-1, 1024)))"
      ],
      "execution_count": 111,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "V-CVqIhPnhY_"
      },
      "source": [
        "# Smaller model\n",
        "These two models are effectively the same, but notice how the TN layer has nearly 10x fewer parameters."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "XPBvnB95jg4b",
        "outputId": "965d214c-7347-4562-e6e5-8ac3ad68ce65",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "Dense = tf.keras.layers.Dense\n",
        "fc_model = tf.keras.Sequential(\n",
        "    [\n",
        "     tf.keras.Input(shape=(2,)),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     Dense(1, activation=None)])\n",
        "fc_model.summary()"
      ],
      "execution_count": 112,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Model: \"sequential_18\"\n",
            "_________________________________________________________________\n",
            " Layer (type)                Output Shape              Param #   \n",
            "=================================================================\n",
            " dense_52 (Dense)            (None, 1024)              3072      \n",
            "                                                                 \n",
            " dense_53 (Dense)            (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_54 (Dense)            (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_55 (Dense)            (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_56 (Dense)            (None, 1024)              1049600   \n",
            "                                                                 \n",
            " dense_57 (Dense)            (None, 1)                 1025      \n",
            "                                                                 \n",
            "=================================================================\n",
            "Total params: 4202497 (16.03 MB)\n",
            "Trainable params: 4202497 (16.03 MB)\n",
            "Non-trainable params: 0 (0.00 Byte)\n",
            "_________________________________________________________________\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "bbKsmK8wIFTp",
        "outputId": "c3bed11c-6dc6-4ee1-be2c-65028edc8017",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "tn_model = tf.keras.Sequential(\n",
        "    [\n",
        "     tf.keras.Input(shape=(2,)),\n",
        "     Dense(1024, activation=tf.nn.relu),\n",
        "     # Here, we replace the dense layer with our MPS.\n",
        "     TNLayer(),\n",
        "     TNLayer(),\n",
        "     TNLayer(),\n",
        "     Dense(1, activation=None)])\n",
        "tn_model.summary()"
      ],
      "execution_count": 113,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Model: \"sequential_19\"\n",
            "_________________________________________________________________\n",
            " Layer (type)                Output Shape              Param #   \n",
            "=================================================================\n",
            " dense_58 (Dense)            (None, 1024)              3072      \n",
            "                                                                 \n",
            " tn_layer_27 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " tn_layer_28 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " tn_layer_29 (TNLayer)       (None, 1024)              5120      \n",
            "                                                                 \n",
            " dense_59 (Dense)            (None, 1)                 1025      \n",
            "                                                                 \n",
            "=================================================================\n",
            "Total params: 19457 (76.00 KB)\n",
            "Trainable params: 19457 (76.00 KB)\n",
            "Non-trainable params: 0 (0.00 Byte)\n",
            "_________________________________________________________________\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "GWwoYp0WnsLA"
      },
      "source": [
        "# Training a model\n",
        "\n",
        "You can train the TN model just as you would a normal neural network model! Here, we give an example of how to do it in Keras."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qDFzOC7sDBJ-"
      },
      "source": [
        "X = np.concatenate([np.random.randn(20, 2) + np.array([3, 3]),\n",
        "                    np.random.randn(20, 2) + np.array([-3, -3]),\n",
        "                    np.random.randn(20, 2) + np.array([-3, 3]),\n",
        "                    np.random.randn(20, 2) + np.array([3, -3])])\n",
        "\n",
        "Y = np.concatenate([np.ones((40)), -np.ones((40))])"
      ],
      "execution_count": 114,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since beginning of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "19TWP-1eKURB",
        "outputId": "afded898-bc82-4309-b8b0-e62567e83d39"
      },
      "execution_count": 115,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since beginning of run: 1710188946.212133\n",
            "Mon Mar 11 20:29:06 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "crc0q1vbIyTj",
        "outputId": "f1fba832-a28d-4e3f-bdc7-ed4330ca18fb",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        }
      },
      "source": [
        "tn_model.compile(optimizer=\"adam\", loss=\"mean_squared_error\")\n",
        "tn_model.fit(X, Y, epochs=300, verbose=2)"
      ],
      "execution_count": 116,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/300\n",
            "3/3 - 2s - loss: 1.0027 - 2s/epoch - 532ms/step\n",
            "Epoch 2/300\n",
            "3/3 - 0s - loss: 1.0017 - 20ms/epoch - 7ms/step\n",
            "Epoch 3/300\n",
            "3/3 - 0s - loss: 1.0005 - 23ms/epoch - 8ms/step\n",
            "Epoch 4/300\n",
            "3/3 - 0s - loss: 1.0000 - 17ms/epoch - 6ms/step\n",
            "Epoch 5/300\n",
            "3/3 - 0s - loss: 1.0004 - 20ms/epoch - 7ms/step\n",
            "Epoch 6/300\n",
            "3/3 - 0s - loss: 0.9997 - 22ms/epoch - 7ms/step\n",
            "Epoch 7/300\n",
            "3/3 - 0s - loss: 0.9994 - 22ms/epoch - 7ms/step\n",
            "Epoch 8/300\n",
            "3/3 - 0s - loss: 0.9987 - 22ms/epoch - 7ms/step\n",
            "Epoch 9/300\n",
            "3/3 - 0s - loss: 0.9967 - 23ms/epoch - 8ms/step\n",
            "Epoch 10/300\n",
            "3/3 - 0s - loss: 0.9925 - 24ms/epoch - 8ms/step\n",
            "Epoch 11/300\n",
            "3/3 - 0s - loss: 0.9831 - 19ms/epoch - 6ms/step\n",
            "Epoch 12/300\n",
            "3/3 - 0s - loss: 0.9623 - 20ms/epoch - 7ms/step\n",
            "Epoch 13/300\n",
            "3/3 - 0s - loss: 0.9223 - 17ms/epoch - 6ms/step\n",
            "Epoch 14/300\n",
            "3/3 - 0s - loss: 0.8415 - 20ms/epoch - 7ms/step\n",
            "Epoch 15/300\n",
            "3/3 - 0s - loss: 0.6975 - 22ms/epoch - 7ms/step\n",
            "Epoch 16/300\n",
            "3/3 - 0s - loss: 0.4558 - 20ms/epoch - 7ms/step\n",
            "Epoch 17/300\n",
            "3/3 - 0s - loss: 0.2123 - 19ms/epoch - 6ms/step\n",
            "Epoch 18/300\n",
            "3/3 - 0s - loss: 0.1269 - 20ms/epoch - 7ms/step\n",
            "Epoch 19/300\n",
            "3/3 - 0s - loss: 0.0531 - 23ms/epoch - 8ms/step\n",
            "Epoch 20/300\n",
            "3/3 - 0s - loss: 0.0502 - 20ms/epoch - 7ms/step\n",
            "Epoch 21/300\n",
            "3/3 - 0s - loss: 0.0582 - 19ms/epoch - 6ms/step\n",
            "Epoch 22/300\n",
            "3/3 - 0s - loss: 0.0487 - 23ms/epoch - 8ms/step\n",
            "Epoch 23/300\n",
            "3/3 - 0s - loss: 0.0256 - 24ms/epoch - 8ms/step\n",
            "Epoch 24/300\n",
            "3/3 - 0s - loss: 0.0134 - 20ms/epoch - 7ms/step\n",
            "Epoch 25/300\n",
            "3/3 - 0s - loss: 0.0240 - 19ms/epoch - 6ms/step\n",
            "Epoch 26/300\n",
            "3/3 - 0s - loss: 0.0209 - 17ms/epoch - 6ms/step\n",
            "Epoch 27/300\n",
            "3/3 - 0s - loss: 0.0107 - 21ms/epoch - 7ms/step\n",
            "Epoch 28/300\n",
            "3/3 - 0s - loss: 0.0117 - 24ms/epoch - 8ms/step\n",
            "Epoch 29/300\n",
            "3/3 - 0s - loss: 0.0137 - 22ms/epoch - 7ms/step\n",
            "Epoch 30/300\n",
            "3/3 - 0s - loss: 0.0115 - 19ms/epoch - 6ms/step\n",
            "Epoch 31/300\n",
            "3/3 - 0s - loss: 0.0093 - 21ms/epoch - 7ms/step\n",
            "Epoch 32/300\n",
            "3/3 - 0s - loss: 0.0088 - 21ms/epoch - 7ms/step\n",
            "Epoch 33/300\n",
            "3/3 - 0s - loss: 0.0086 - 23ms/epoch - 8ms/step\n",
            "Epoch 34/300\n",
            "3/3 - 0s - loss: 0.0078 - 20ms/epoch - 7ms/step\n",
            "Epoch 35/300\n",
            "3/3 - 0s - loss: 0.0074 - 19ms/epoch - 6ms/step\n",
            "Epoch 36/300\n",
            "3/3 - 0s - loss: 0.0072 - 21ms/epoch - 7ms/step\n",
            "Epoch 37/300\n",
            "3/3 - 0s - loss: 0.0066 - 17ms/epoch - 6ms/step\n",
            "Epoch 38/300\n",
            "3/3 - 0s - loss: 0.0063 - 19ms/epoch - 6ms/step\n",
            "Epoch 39/300\n",
            "3/3 - 0s - loss: 0.0062 - 18ms/epoch - 6ms/step\n",
            "Epoch 40/300\n",
            "3/3 - 0s - loss: 0.0059 - 19ms/epoch - 6ms/step\n",
            "Epoch 41/300\n",
            "3/3 - 0s - loss: 0.0055 - 22ms/epoch - 7ms/step\n",
            "Epoch 42/300\n",
            "3/3 - 0s - loss: 0.0054 - 20ms/epoch - 7ms/step\n",
            "Epoch 43/300\n",
            "3/3 - 0s - loss: 0.0053 - 19ms/epoch - 6ms/step\n",
            "Epoch 44/300\n",
            "3/3 - 0s - loss: 0.0051 - 19ms/epoch - 6ms/step\n",
            "Epoch 45/300\n",
            "3/3 - 0s - loss: 0.0049 - 20ms/epoch - 7ms/step\n",
            "Epoch 46/300\n",
            "3/3 - 0s - loss: 0.0047 - 21ms/epoch - 7ms/step\n",
            "Epoch 47/300\n",
            "3/3 - 0s - loss: 0.0046 - 19ms/epoch - 6ms/step\n",
            "Epoch 48/300\n",
            "3/3 - 0s - loss: 0.0044 - 19ms/epoch - 6ms/step\n",
            "Epoch 49/300\n",
            "3/3 - 0s - loss: 0.0044 - 24ms/epoch - 8ms/step\n",
            "Epoch 50/300\n",
            "3/3 - 0s - loss: 0.0042 - 23ms/epoch - 8ms/step\n",
            "Epoch 51/300\n",
            "3/3 - 0s - loss: 0.0041 - 21ms/epoch - 7ms/step\n",
            "Epoch 52/300\n",
            "3/3 - 0s - loss: 0.0040 - 19ms/epoch - 6ms/step\n",
            "Epoch 53/300\n",
            "3/3 - 0s - loss: 0.0039 - 21ms/epoch - 7ms/step\n",
            "Epoch 54/300\n",
            "3/3 - 0s - loss: 0.0038 - 21ms/epoch - 7ms/step\n",
            "Epoch 55/300\n",
            "3/3 - 0s - loss: 0.0037 - 18ms/epoch - 6ms/step\n",
            "Epoch 56/300\n",
            "3/3 - 0s - loss: 0.0036 - 17ms/epoch - 6ms/step\n",
            "Epoch 57/300\n",
            "3/3 - 0s - loss: 0.0035 - 20ms/epoch - 7ms/step\n",
            "Epoch 58/300\n",
            "3/3 - 0s - loss: 0.0034 - 19ms/epoch - 6ms/step\n",
            "Epoch 59/300\n",
            "3/3 - 0s - loss: 0.0033 - 18ms/epoch - 6ms/step\n",
            "Epoch 60/300\n",
            "3/3 - 0s - loss: 0.0032 - 21ms/epoch - 7ms/step\n",
            "Epoch 61/300\n",
            "3/3 - 0s - loss: 0.0031 - 19ms/epoch - 6ms/step\n",
            "Epoch 62/300\n",
            "3/3 - 0s - loss: 0.0031 - 26ms/epoch - 9ms/step\n",
            "Epoch 63/300\n",
            "3/3 - 0s - loss: 0.0030 - 23ms/epoch - 8ms/step\n",
            "Epoch 64/300\n",
            "3/3 - 0s - loss: 0.0029 - 19ms/epoch - 6ms/step\n",
            "Epoch 65/300\n",
            "3/3 - 0s - loss: 0.0029 - 20ms/epoch - 7ms/step\n",
            "Epoch 66/300\n",
            "3/3 - 0s - loss: 0.0028 - 23ms/epoch - 8ms/step\n",
            "Epoch 67/300\n",
            "3/3 - 0s - loss: 0.0027 - 19ms/epoch - 6ms/step\n",
            "Epoch 68/300\n",
            "3/3 - 0s - loss: 0.0027 - 18ms/epoch - 6ms/step\n",
            "Epoch 69/300\n",
            "3/3 - 0s - loss: 0.0026 - 18ms/epoch - 6ms/step\n",
            "Epoch 70/300\n",
            "3/3 - 0s - loss: 0.0025 - 22ms/epoch - 7ms/step\n",
            "Epoch 71/300\n",
            "3/3 - 0s - loss: 0.0024 - 22ms/epoch - 7ms/step\n",
            "Epoch 72/300\n",
            "3/3 - 0s - loss: 0.0024 - 19ms/epoch - 6ms/step\n",
            "Epoch 73/300\n",
            "3/3 - 0s - loss: 0.0023 - 18ms/epoch - 6ms/step\n",
            "Epoch 74/300\n",
            "3/3 - 0s - loss: 0.0022 - 20ms/epoch - 7ms/step\n",
            "Epoch 75/300\n",
            "3/3 - 0s - loss: 0.0022 - 20ms/epoch - 7ms/step\n",
            "Epoch 76/300\n",
            "3/3 - 0s - loss: 0.0021 - 22ms/epoch - 7ms/step\n",
            "Epoch 77/300\n",
            "3/3 - 0s - loss: 0.0021 - 20ms/epoch - 7ms/step\n",
            "Epoch 78/300\n",
            "3/3 - 0s - loss: 0.0020 - 19ms/epoch - 6ms/step\n",
            "Epoch 79/300\n",
            "3/3 - 0s - loss: 0.0020 - 21ms/epoch - 7ms/step\n",
            "Epoch 80/300\n",
            "3/3 - 0s - loss: 0.0019 - 22ms/epoch - 7ms/step\n",
            "Epoch 81/300\n",
            "3/3 - 0s - loss: 0.0019 - 19ms/epoch - 6ms/step\n",
            "Epoch 82/300\n",
            "3/3 - 0s - loss: 0.0018 - 17ms/epoch - 6ms/step\n",
            "Epoch 83/300\n",
            "3/3 - 0s - loss: 0.0018 - 19ms/epoch - 6ms/step\n",
            "Epoch 84/300\n",
            "3/3 - 0s - loss: 0.0018 - 20ms/epoch - 7ms/step\n",
            "Epoch 85/300\n",
            "3/3 - 0s - loss: 0.0017 - 20ms/epoch - 7ms/step\n",
            "Epoch 86/300\n",
            "3/3 - 0s - loss: 0.0016 - 19ms/epoch - 6ms/step\n",
            "Epoch 87/300\n",
            "3/3 - 0s - loss: 0.0016 - 20ms/epoch - 7ms/step\n",
            "Epoch 88/300\n",
            "3/3 - 0s - loss: 0.0015 - 21ms/epoch - 7ms/step\n",
            "Epoch 89/300\n",
            "3/3 - 0s - loss: 0.0015 - 21ms/epoch - 7ms/step\n",
            "Epoch 90/300\n",
            "3/3 - 0s - loss: 0.0015 - 22ms/epoch - 7ms/step\n",
            "Epoch 91/300\n",
            "3/3 - 0s - loss: 0.0014 - 20ms/epoch - 7ms/step\n",
            "Epoch 92/300\n",
            "3/3 - 0s - loss: 0.0014 - 22ms/epoch - 7ms/step\n",
            "Epoch 93/300\n",
            "3/3 - 0s - loss: 0.0013 - 21ms/epoch - 7ms/step\n",
            "Epoch 94/300\n",
            "3/3 - 0s - loss: 0.0013 - 21ms/epoch - 7ms/step\n",
            "Epoch 95/300\n",
            "3/3 - 0s - loss: 0.0013 - 19ms/epoch - 6ms/step\n",
            "Epoch 96/300\n",
            "3/3 - 0s - loss: 0.0012 - 20ms/epoch - 7ms/step\n",
            "Epoch 97/300\n",
            "3/3 - 0s - loss: 0.0012 - 23ms/epoch - 8ms/step\n",
            "Epoch 98/300\n",
            "3/3 - 0s - loss: 0.0012 - 19ms/epoch - 6ms/step\n",
            "Epoch 99/300\n",
            "3/3 - 0s - loss: 0.0011 - 19ms/epoch - 6ms/step\n",
            "Epoch 100/300\n",
            "3/3 - 0s - loss: 0.0011 - 20ms/epoch - 7ms/step\n",
            "Epoch 101/300\n",
            "3/3 - 0s - loss: 0.0010 - 20ms/epoch - 7ms/step\n",
            "Epoch 102/300\n",
            "3/3 - 0s - loss: 0.0010 - 21ms/epoch - 7ms/step\n",
            "Epoch 103/300\n",
            "3/3 - 0s - loss: 9.6710e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 104/300\n",
            "3/3 - 0s - loss: 9.2062e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 105/300\n",
            "3/3 - 0s - loss: 9.0423e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 106/300\n",
            "3/3 - 0s - loss: 8.8553e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 107/300\n",
            "3/3 - 0s - loss: 8.3442e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 108/300\n",
            "3/3 - 0s - loss: 8.0482e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 109/300\n",
            "3/3 - 0s - loss: 7.8575e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 110/300\n",
            "3/3 - 0s - loss: 7.3699e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 111/300\n",
            "3/3 - 0s - loss: 7.2607e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 112/300\n",
            "3/3 - 0s - loss: 7.0270e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 113/300\n",
            "3/3 - 0s - loss: 6.4976e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 114/300\n",
            "3/3 - 0s - loss: 6.3908e-04 - 26ms/epoch - 9ms/step\n",
            "Epoch 115/300\n",
            "3/3 - 0s - loss: 6.3934e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 116/300\n",
            "3/3 - 0s - loss: 5.7354e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 117/300\n",
            "3/3 - 0s - loss: 5.5990e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 118/300\n",
            "3/3 - 0s - loss: 5.3363e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 119/300\n",
            "3/3 - 0s - loss: 5.3009e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 120/300\n",
            "3/3 - 0s - loss: 5.0497e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 121/300\n",
            "3/3 - 0s - loss: 4.4842e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 122/300\n",
            "3/3 - 0s - loss: 4.3727e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 123/300\n",
            "3/3 - 0s - loss: 4.1945e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 124/300\n",
            "3/3 - 0s - loss: 4.1183e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 125/300\n",
            "3/3 - 0s - loss: 3.7343e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 126/300\n",
            "3/3 - 0s - loss: 3.5136e-04 - 22ms/epoch - 7ms/step\n",
            "Epoch 127/300\n",
            "3/3 - 0s - loss: 3.4858e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 128/300\n",
            "3/3 - 0s - loss: 3.1330e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 129/300\n",
            "3/3 - 0s - loss: 2.8951e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 130/300\n",
            "3/3 - 0s - loss: 2.8119e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 131/300\n",
            "3/3 - 0s - loss: 2.5641e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 132/300\n",
            "3/3 - 0s - loss: 2.5427e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 133/300\n",
            "3/3 - 0s - loss: 2.3614e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 134/300\n",
            "3/3 - 0s - loss: 2.2062e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 135/300\n",
            "3/3 - 0s - loss: 2.0706e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 136/300\n",
            "3/3 - 0s - loss: 1.9619e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 137/300\n",
            "3/3 - 0s - loss: 1.8269e-04 - 21ms/epoch - 7ms/step\n",
            "Epoch 138/300\n",
            "3/3 - 0s - loss: 1.7635e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 139/300\n",
            "3/3 - 0s - loss: 1.7394e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 140/300\n",
            "3/3 - 0s - loss: 1.5340e-04 - 17ms/epoch - 6ms/step\n",
            "Epoch 141/300\n",
            "3/3 - 0s - loss: 1.4226e-04 - 19ms/epoch - 6ms/step\n",
            "Epoch 142/300\n",
            "3/3 - 0s - loss: 1.3175e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 143/300\n",
            "3/3 - 0s - loss: 1.2139e-04 - 20ms/epoch - 7ms/step\n",
            "Epoch 144/300\n",
            "3/3 - 0s - loss: 1.1814e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 145/300\n",
            "3/3 - 0s - loss: 1.0662e-04 - 18ms/epoch - 6ms/step\n",
            "Epoch 146/300\n",
            "3/3 - 0s - loss: 1.0956e-04 - 23ms/epoch - 8ms/step\n",
            "Epoch 147/300\n",
            "3/3 - 0s - loss: 9.0720e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 148/300\n",
            "3/3 - 0s - loss: 8.6915e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 149/300\n",
            "3/3 - 0s - loss: 8.0642e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 150/300\n",
            "3/3 - 0s - loss: 7.5332e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 151/300\n",
            "3/3 - 0s - loss: 7.6868e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 152/300\n",
            "3/3 - 0s - loss: 6.5900e-05 - 21ms/epoch - 7ms/step\n",
            "Epoch 153/300\n",
            "3/3 - 0s - loss: 6.0971e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 154/300\n",
            "3/3 - 0s - loss: 5.5989e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 155/300\n",
            "3/3 - 0s - loss: 5.4035e-05 - 21ms/epoch - 7ms/step\n",
            "Epoch 156/300\n",
            "3/3 - 0s - loss: 4.8327e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 157/300\n",
            "3/3 - 0s - loss: 4.6394e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 158/300\n",
            "3/3 - 0s - loss: 4.1724e-05 - 21ms/epoch - 7ms/step\n",
            "Epoch 159/300\n",
            "3/3 - 0s - loss: 3.8925e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 160/300\n",
            "3/3 - 0s - loss: 3.7235e-05 - 21ms/epoch - 7ms/step\n",
            "Epoch 161/300\n",
            "3/3 - 0s - loss: 3.7514e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 162/300\n",
            "3/3 - 0s - loss: 3.2076e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 163/300\n",
            "3/3 - 0s - loss: 3.1523e-05 - 16ms/epoch - 5ms/step\n",
            "Epoch 164/300\n",
            "3/3 - 0s - loss: 3.0015e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 165/300\n",
            "3/3 - 0s - loss: 2.8057e-05 - 21ms/epoch - 7ms/step\n",
            "Epoch 166/300\n",
            "3/3 - 0s - loss: 2.4057e-05 - 22ms/epoch - 7ms/step\n",
            "Epoch 167/300\n",
            "3/3 - 0s - loss: 2.3553e-05 - 24ms/epoch - 8ms/step\n",
            "Epoch 168/300\n",
            "3/3 - 0s - loss: 2.1581e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 169/300\n",
            "3/3 - 0s - loss: 1.9708e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 170/300\n",
            "3/3 - 0s - loss: 1.8853e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 171/300\n",
            "3/3 - 0s - loss: 1.7904e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 172/300\n",
            "3/3 - 0s - loss: 1.6729e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 173/300\n",
            "3/3 - 0s - loss: 1.5031e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 174/300\n",
            "3/3 - 0s - loss: 1.4735e-05 - 18ms/epoch - 6ms/step\n",
            "Epoch 175/300\n",
            "3/3 - 0s - loss: 1.4371e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 176/300\n",
            "3/3 - 0s - loss: 1.3377e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 177/300\n",
            "3/3 - 0s - loss: 1.3283e-05 - 20ms/epoch - 7ms/step\n",
            "Epoch 178/300\n",
            "3/3 - 0s - loss: 1.1561e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 179/300\n",
            "3/3 - 0s - loss: 1.2166e-05 - 19ms/epoch - 6ms/step\n",
            "Epoch 180/300\n",
            "3/3 - 0s - loss: 1.0238e-05 - 21ms/epoch - 7ms/step\n",
            "Epoch 181/300\n",
            "3/3 - 0s - loss: 1.0778e-05 - 17ms/epoch - 6ms/step\n",
            "Epoch 182/300\n",
            "3/3 - 0s - loss: 9.6355e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 183/300\n",
            "3/3 - 0s - loss: 9.0297e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 184/300\n",
            "3/3 - 0s - loss: 8.6974e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 185/300\n",
            "3/3 - 0s - loss: 9.0029e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 186/300\n",
            "3/3 - 0s - loss: 7.7298e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 187/300\n",
            "3/3 - 0s - loss: 7.9345e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 188/300\n",
            "3/3 - 0s - loss: 7.3830e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 189/300\n",
            "3/3 - 0s - loss: 7.0986e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 190/300\n",
            "3/3 - 0s - loss: 7.2033e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 191/300\n",
            "3/3 - 0s - loss: 6.7912e-06 - 23ms/epoch - 8ms/step\n",
            "Epoch 192/300\n",
            "3/3 - 0s - loss: 6.5267e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 193/300\n",
            "3/3 - 0s - loss: 6.3178e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 194/300\n",
            "3/3 - 0s - loss: 6.0076e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 195/300\n",
            "3/3 - 0s - loss: 5.6552e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 196/300\n",
            "3/3 - 0s - loss: 5.9676e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 197/300\n",
            "3/3 - 0s - loss: 5.3009e-06 - 23ms/epoch - 8ms/step\n",
            "Epoch 198/300\n",
            "3/3 - 0s - loss: 5.6772e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 199/300\n",
            "3/3 - 0s - loss: 5.1632e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 200/300\n",
            "3/3 - 0s - loss: 5.1104e-06 - 16ms/epoch - 5ms/step\n",
            "Epoch 201/300\n",
            "3/3 - 0s - loss: 5.5104e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 202/300\n",
            "3/3 - 0s - loss: 4.9497e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 203/300\n",
            "3/3 - 0s - loss: 4.8721e-06 - 22ms/epoch - 7ms/step\n",
            "Epoch 204/300\n",
            "3/3 - 0s - loss: 5.0388e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 205/300\n",
            "3/3 - 0s - loss: 4.8794e-06 - 22ms/epoch - 7ms/step\n",
            "Epoch 206/300\n",
            "3/3 - 0s - loss: 4.5404e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 207/300\n",
            "3/3 - 0s - loss: 4.4605e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 208/300\n",
            "3/3 - 0s - loss: 4.3689e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 209/300\n",
            "3/3 - 0s - loss: 4.1067e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 210/300\n",
            "3/3 - 0s - loss: 4.2063e-06 - 22ms/epoch - 7ms/step\n",
            "Epoch 211/300\n",
            "3/3 - 0s - loss: 4.4588e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 212/300\n",
            "3/3 - 0s - loss: 4.3232e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 213/300\n",
            "3/3 - 0s - loss: 3.8392e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 214/300\n",
            "3/3 - 0s - loss: 4.0451e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 215/300\n",
            "3/3 - 0s - loss: 3.7289e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 216/300\n",
            "3/3 - 0s - loss: 3.8342e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 217/300\n",
            "3/3 - 0s - loss: 3.5764e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 218/300\n",
            "3/3 - 0s - loss: 3.5380e-06 - 22ms/epoch - 7ms/step\n",
            "Epoch 219/300\n",
            "3/3 - 0s - loss: 3.5960e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 220/300\n",
            "3/3 - 0s - loss: 3.3105e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 221/300\n",
            "3/3 - 0s - loss: 3.6788e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 222/300\n",
            "3/3 - 0s - loss: 3.2174e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 223/300\n",
            "3/3 - 0s - loss: 3.4016e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 224/300\n",
            "3/3 - 0s - loss: 3.2737e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 225/300\n",
            "3/3 - 0s - loss: 3.1592e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 226/300\n",
            "3/3 - 0s - loss: 3.0851e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 227/300\n",
            "3/3 - 0s - loss: 3.2379e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 228/300\n",
            "3/3 - 0s - loss: 2.8544e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 229/300\n",
            "3/3 - 0s - loss: 3.4840e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 230/300\n",
            "3/3 - 0s - loss: 3.0716e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 231/300\n",
            "3/3 - 0s - loss: 3.1653e-06 - 22ms/epoch - 7ms/step\n",
            "Epoch 232/300\n",
            "3/3 - 0s - loss: 2.9843e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 233/300\n",
            "3/3 - 0s - loss: 2.9277e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 234/300\n",
            "3/3 - 0s - loss: 2.8519e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 235/300\n",
            "3/3 - 0s - loss: 2.7391e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 236/300\n",
            "3/3 - 0s - loss: 2.8742e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 237/300\n",
            "3/3 - 0s - loss: 2.9349e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 238/300\n",
            "3/3 - 0s - loss: 2.7641e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 239/300\n",
            "3/3 - 0s - loss: 2.6818e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 240/300\n",
            "3/3 - 0s - loss: 2.6418e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 241/300\n",
            "3/3 - 0s - loss: 2.6544e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 242/300\n",
            "3/3 - 0s - loss: 2.5954e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 243/300\n",
            "3/3 - 0s - loss: 2.2675e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 244/300\n",
            "3/3 - 0s - loss: 3.1913e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 245/300\n",
            "3/3 - 0s - loss: 2.8547e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 246/300\n",
            "3/3 - 0s - loss: 2.7891e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 247/300\n",
            "3/3 - 0s - loss: 2.9266e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 248/300\n",
            "3/3 - 0s - loss: 2.3939e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 249/300\n",
            "3/3 - 0s - loss: 3.0247e-06 - 22ms/epoch - 7ms/step\n",
            "Epoch 250/300\n",
            "3/3 - 0s - loss: 2.5588e-06 - 23ms/epoch - 8ms/step\n",
            "Epoch 251/300\n",
            "3/3 - 0s - loss: 2.3505e-06 - 23ms/epoch - 8ms/step\n",
            "Epoch 252/300\n",
            "3/3 - 0s - loss: 2.1737e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 253/300\n",
            "3/3 - 0s - loss: 2.7818e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 254/300\n",
            "3/3 - 0s - loss: 2.2563e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 255/300\n",
            "3/3 - 0s - loss: 2.5857e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 256/300\n",
            "3/3 - 0s - loss: 2.2416e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 257/300\n",
            "3/3 - 0s - loss: 2.0849e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 258/300\n",
            "3/3 - 0s - loss: 2.6086e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 259/300\n",
            "3/3 - 0s - loss: 3.8984e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 260/300\n",
            "3/3 - 0s - loss: 3.1616e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 261/300\n",
            "3/3 - 0s - loss: 3.0152e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 262/300\n",
            "3/3 - 0s - loss: 2.9144e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 263/300\n",
            "3/3 - 0s - loss: 3.6282e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 264/300\n",
            "3/3 - 0s - loss: 2.2841e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 265/300\n",
            "3/3 - 0s - loss: 2.3176e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 266/300\n",
            "3/3 - 0s - loss: 2.2951e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 267/300\n",
            "3/3 - 0s - loss: 1.8569e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 268/300\n",
            "3/3 - 0s - loss: 1.7938e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 269/300\n",
            "3/3 - 0s - loss: 1.7120e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 270/300\n",
            "3/3 - 0s - loss: 1.6925e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 271/300\n",
            "3/3 - 0s - loss: 1.7511e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 272/300\n",
            "3/3 - 0s - loss: 1.6498e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 273/300\n",
            "3/3 - 0s - loss: 1.6592e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 274/300\n",
            "3/3 - 0s - loss: 1.7921e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 275/300\n",
            "3/3 - 0s - loss: 1.6000e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 276/300\n",
            "3/3 - 0s - loss: 1.8556e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 277/300\n",
            "3/3 - 0s - loss: 1.7443e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 278/300\n",
            "3/3 - 0s - loss: 1.8045e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 279/300\n",
            "3/3 - 0s - loss: 1.7643e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 280/300\n",
            "3/3 - 0s - loss: 1.5345e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 281/300\n",
            "3/3 - 0s - loss: 1.5885e-06 - 19ms/epoch - 6ms/step\n",
            "Epoch 282/300\n",
            "3/3 - 0s - loss: 1.6398e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 283/300\n",
            "3/3 - 0s - loss: 1.5007e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 284/300\n",
            "3/3 - 0s - loss: 1.4306e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 285/300\n",
            "3/3 - 0s - loss: 1.5302e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 286/300\n",
            "3/3 - 0s - loss: 1.4362e-06 - 16ms/epoch - 5ms/step\n",
            "Epoch 287/300\n",
            "3/3 - 0s - loss: 1.4311e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 288/300\n",
            "3/3 - 0s - loss: 1.4466e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 289/300\n",
            "3/3 - 0s - loss: 1.3473e-06 - 17ms/epoch - 6ms/step\n",
            "Epoch 290/300\n",
            "3/3 - 0s - loss: 1.3382e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 291/300\n",
            "3/3 - 0s - loss: 1.4063e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 292/300\n",
            "3/3 - 0s - loss: 1.3552e-06 - 21ms/epoch - 7ms/step\n",
            "Epoch 293/300\n",
            "3/3 - 0s - loss: 1.3948e-06 - 18ms/epoch - 6ms/step\n",
            "Epoch 294/300\n",
            "3/3 - 0s - loss: 1.3018e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 295/300\n",
            "3/3 - 0s - loss: 1.2673e-06 - 22ms/epoch - 7ms/step\n",
            "Epoch 296/300\n",
            "3/3 - 0s - loss: 1.4322e-06 - 23ms/epoch - 8ms/step\n",
            "Epoch 297/300\n",
            "3/3 - 0s - loss: 1.4670e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 298/300\n",
            "3/3 - 0s - loss: 1.2146e-06 - 20ms/epoch - 7ms/step\n",
            "Epoch 299/300\n",
            "3/3 - 0s - loss: 1.4325e-06 - 23ms/epoch - 8ms/step\n",
            "Epoch 300/300\n",
            "3/3 - 0s - loss: 1.2532e-06 - 19ms/epoch - 6ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<keras.src.callbacks.History at 0x7882f6b93b80>"
            ]
          },
          "metadata": {},
          "execution_count": 116
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "n-aNP4n3sqG_",
        "outputId": "14aa6f4e-7cb4-4094-b00c-6767b036e27e",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 442
        }
      },
      "source": [
        "# Plotting code, feel free to ignore.\n",
        "h = 1.0\n",
        "x_min, x_max = X[:, 0].min() - 5, X[:, 0].max() + 5\n",
        "y_min, y_max = X[:, 1].min() - 5, X[:, 1].max() + 5\n",
        "xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n",
        "                     np.arange(y_min, y_max, h))\n",
        "\n",
        "# here \"model\" is your model's prediction (classification) function\n",
        "Z = tn_model.predict(np.c_[xx.ravel(), yy.ravel()])\n",
        "\n",
        "# Put the result into a color plot\n",
        "Z = Z.reshape(xx.shape)\n",
        "plt.contourf(xx, yy, Z)\n",
        "plt.axis('off')\n",
        "\n",
        "# Plot also the training points\n",
        "plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)"
      ],
      "execution_count": 117,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "14/14 [==============================] - 0s 4ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.collections.PathCollection at 0x7882f77be020>"
            ]
          },
          "metadata": {},
          "execution_count": 117
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since end of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "wfZCzuq9KY9b",
        "outputId": "6e91f3f4-60ce-4619-85f5-75125602a9eb"
      },
      "execution_count": 118,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since end of run: 1710188955.2234523\n",
            "Mon Mar 11 20:29:15 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since beginning of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "Ft6S13x6KuEQ",
        "outputId": "e619c441-1c71-446c-a231-63ff1fed6de1"
      },
      "execution_count": 119,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since beginning of run: 1710188955.2342422\n",
            "Mon Mar 11 20:29:15 2024\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "BMxSJo5gtOmQ"
      },
      "source": [
        "# VS Fully Connected"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "NKQx7stYswzU",
        "outputId": "ecabb0af-4f57-4e4a-a772-ade766a0847e",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 11384
        }
      },
      "source": [
        "fc_model.compile(optimizer=\"adam\", loss=\"mean_squared_error\")\n",
        "fc_model.fit(X, Y, epochs=300, verbose=2)\n",
        "# Plotting code, feel free to ignore.\n",
        "h = 1.0\n",
        "x_min, x_max = X[:, 0].min() - 5, X[:, 0].max() + 5\n",
        "y_min, y_max = X[:, 1].min() - 5, X[:, 1].max() + 5\n",
        "xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n",
        "                     np.arange(y_min, y_max, h))\n",
        "\n",
        "# here \"model\" is your model's prediction (classification) function\n",
        "Z = fc_model.predict(np.c_[xx.ravel(), yy.ravel()])\n",
        "\n",
        "# Put the result into a color plot\n",
        "Z = Z.reshape(xx.shape)\n",
        "plt.contourf(xx, yy, Z)\n",
        "plt.axis('off')\n",
        "\n",
        "# Plot also the training points\n",
        "plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired)"
      ],
      "execution_count": 120,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Epoch 1/300\n",
            "3/3 - 1s - loss: 0.8452 - 825ms/epoch - 275ms/step\n",
            "Epoch 2/300\n",
            "3/3 - 0s - loss: 0.2659 - 64ms/epoch - 21ms/step\n",
            "Epoch 3/300\n",
            "3/3 - 0s - loss: 0.1703 - 67ms/epoch - 22ms/step\n",
            "Epoch 4/300\n",
            "3/3 - 0s - loss: 0.1249 - 68ms/epoch - 23ms/step\n",
            "Epoch 5/300\n",
            "3/3 - 0s - loss: 0.0934 - 66ms/epoch - 22ms/step\n",
            "Epoch 6/300\n",
            "3/3 - 0s - loss: 0.0875 - 64ms/epoch - 21ms/step\n",
            "Epoch 7/300\n",
            "3/3 - 0s - loss: 0.0863 - 70ms/epoch - 23ms/step\n",
            "Epoch 8/300\n",
            "3/3 - 0s - loss: 0.0623 - 65ms/epoch - 22ms/step\n",
            "Epoch 9/300\n",
            "3/3 - 0s - loss: 0.0760 - 63ms/epoch - 21ms/step\n",
            "Epoch 10/300\n",
            "3/3 - 0s - loss: 0.0512 - 64ms/epoch - 21ms/step\n",
            "Epoch 11/300\n",
            "3/3 - 0s - loss: 0.0570 - 64ms/epoch - 21ms/step\n",
            "Epoch 12/300\n",
            "3/3 - 0s - loss: 0.0525 - 63ms/epoch - 21ms/step\n",
            "Epoch 13/300\n",
            "3/3 - 0s - loss: 0.0480 - 66ms/epoch - 22ms/step\n",
            "Epoch 14/300\n",
            "3/3 - 0s - loss: 0.0435 - 61ms/epoch - 20ms/step\n",
            "Epoch 15/300\n",
            "3/3 - 0s - loss: 0.0438 - 63ms/epoch - 21ms/step\n",
            "Epoch 16/300\n",
            "3/3 - 0s - loss: 0.0372 - 64ms/epoch - 21ms/step\n",
            "Epoch 17/300\n",
            "3/3 - 0s - loss: 0.0383 - 63ms/epoch - 21ms/step\n",
            "Epoch 18/300\n",
            "3/3 - 0s - loss: 0.0384 - 64ms/epoch - 21ms/step\n",
            "Epoch 19/300\n",
            "3/3 - 0s - loss: 0.0355 - 66ms/epoch - 22ms/step\n",
            "Epoch 20/300\n",
            "3/3 - 0s - loss: 0.0359 - 65ms/epoch - 22ms/step\n",
            "Epoch 21/300\n",
            "3/3 - 0s - loss: 0.0326 - 63ms/epoch - 21ms/step\n",
            "Epoch 22/300\n",
            "3/3 - 0s - loss: 0.0297 - 65ms/epoch - 22ms/step\n",
            "Epoch 23/300\n",
            "3/3 - 0s - loss: 0.0341 - 65ms/epoch - 22ms/step\n",
            "Epoch 24/300\n",
            "3/3 - 0s - loss: 0.0261 - 64ms/epoch - 21ms/step\n",
            "Epoch 25/300\n",
            "3/3 - 0s - loss: 0.0299 - 63ms/epoch - 21ms/step\n",
            "Epoch 26/300\n",
            "3/3 - 0s - loss: 0.0303 - 70ms/epoch - 23ms/step\n",
            "Epoch 27/300\n",
            "3/3 - 0s - loss: 0.0310 - 70ms/epoch - 23ms/step\n",
            "Epoch 28/300\n",
            "3/3 - 0s - loss: 0.0242 - 62ms/epoch - 21ms/step\n",
            "Epoch 29/300\n",
            "3/3 - 0s - loss: 0.0305 - 69ms/epoch - 23ms/step\n",
            "Epoch 30/300\n",
            "3/3 - 0s - loss: 0.0259 - 68ms/epoch - 23ms/step\n",
            "Epoch 31/300\n",
            "3/3 - 0s - loss: 0.0233 - 62ms/epoch - 21ms/step\n",
            "Epoch 32/300\n",
            "3/3 - 0s - loss: 0.0208 - 63ms/epoch - 21ms/step\n",
            "Epoch 33/300\n",
            "3/3 - 0s - loss: 0.0183 - 71ms/epoch - 24ms/step\n",
            "Epoch 34/300\n",
            "3/3 - 0s - loss: 0.0187 - 70ms/epoch - 23ms/step\n",
            "Epoch 35/300\n",
            "3/3 - 0s - loss: 0.0180 - 74ms/epoch - 25ms/step\n",
            "Epoch 36/300\n",
            "3/3 - 0s - loss: 0.0156 - 67ms/epoch - 22ms/step\n",
            "Epoch 37/300\n",
            "3/3 - 0s - loss: 0.0157 - 64ms/epoch - 21ms/step\n",
            "Epoch 38/300\n",
            "3/3 - 0s - loss: 0.0169 - 75ms/epoch - 25ms/step\n",
            "Epoch 39/300\n",
            "3/3 - 0s - loss: 0.0122 - 66ms/epoch - 22ms/step\n",
            "Epoch 40/300\n",
            "3/3 - 0s - loss: 0.0135 - 64ms/epoch - 21ms/step\n",
            "Epoch 41/300\n",
            "3/3 - 0s - loss: 0.0118 - 68ms/epoch - 23ms/step\n",
            "Epoch 42/300\n",
            "3/3 - 0s - loss: 0.0092 - 72ms/epoch - 24ms/step\n",
            "Epoch 43/300\n",
            "3/3 - 0s - loss: 0.0119 - 71ms/epoch - 24ms/step\n",
            "Epoch 44/300\n",
            "3/3 - 0s - loss: 0.0124 - 67ms/epoch - 22ms/step\n",
            "Epoch 45/300\n",
            "3/3 - 0s - loss: 0.0115 - 65ms/epoch - 22ms/step\n",
            "Epoch 46/300\n",
            "3/3 - 0s - loss: 0.0126 - 60ms/epoch - 20ms/step\n",
            "Epoch 47/300\n",
            "3/3 - 0s - loss: 0.0117 - 65ms/epoch - 22ms/step\n",
            "Epoch 48/300\n",
            "3/3 - 0s - loss: 0.0101 - 70ms/epoch - 23ms/step\n",
            "Epoch 49/300\n",
            "3/3 - 0s - loss: 0.0096 - 65ms/epoch - 22ms/step\n",
            "Epoch 50/300\n",
            "3/3 - 0s - loss: 0.0088 - 61ms/epoch - 20ms/step\n",
            "Epoch 51/300\n",
            "3/3 - 0s - loss: 0.0088 - 62ms/epoch - 21ms/step\n",
            "Epoch 52/300\n",
            "3/3 - 0s - loss: 0.0087 - 68ms/epoch - 23ms/step\n",
            "Epoch 53/300\n",
            "3/3 - 0s - loss: 0.0052 - 65ms/epoch - 22ms/step\n",
            "Epoch 54/300\n",
            "3/3 - 0s - loss: 0.0076 - 58ms/epoch - 19ms/step\n",
            "Epoch 55/300\n",
            "3/3 - 0s - loss: 0.0058 - 63ms/epoch - 21ms/step\n",
            "Epoch 56/300\n",
            "3/3 - 0s - loss: 0.0033 - 64ms/epoch - 21ms/step\n",
            "Epoch 57/300\n",
            "3/3 - 0s - loss: 0.0059 - 67ms/epoch - 22ms/step\n",
            "Epoch 58/300\n",
            "3/3 - 0s - loss: 0.0041 - 68ms/epoch - 23ms/step\n",
            "Epoch 59/300\n",
            "3/3 - 0s - loss: 0.0036 - 62ms/epoch - 21ms/step\n",
            "Epoch 60/300\n",
            "3/3 - 0s - loss: 0.0032 - 59ms/epoch - 20ms/step\n",
            "Epoch 61/300\n",
            "3/3 - 0s - loss: 0.0021 - 65ms/epoch - 22ms/step\n",
            "Epoch 62/300\n",
            "3/3 - 0s - loss: 0.0018 - 67ms/epoch - 22ms/step\n",
            "Epoch 63/300\n",
            "3/3 - 0s - loss: 0.0016 - 66ms/epoch - 22ms/step\n",
            "Epoch 64/300\n",
            "3/3 - 0s - loss: 0.0012 - 68ms/epoch - 23ms/step\n",
            "Epoch 65/300\n",
            "3/3 - 0s - loss: 9.2312e-04 - 70ms/epoch - 23ms/step\n",
            "Epoch 66/300\n",
            "3/3 - 0s - loss: 7.9919e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 67/300\n",
            "3/3 - 0s - loss: 7.3712e-04 - 63ms/epoch - 21ms/step\n",
            "Epoch 68/300\n",
            "3/3 - 0s - loss: 3.8919e-04 - 68ms/epoch - 23ms/step\n",
            "Epoch 69/300\n",
            "3/3 - 0s - loss: 6.0233e-04 - 60ms/epoch - 20ms/step\n",
            "Epoch 70/300\n",
            "3/3 - 0s - loss: 4.7835e-04 - 59ms/epoch - 20ms/step\n",
            "Epoch 71/300\n",
            "3/3 - 0s - loss: 2.1882e-04 - 67ms/epoch - 22ms/step\n",
            "Epoch 72/300\n",
            "3/3 - 0s - loss: 2.4105e-04 - 61ms/epoch - 20ms/step\n",
            "Epoch 73/300\n",
            "3/3 - 0s - loss: 3.0990e-04 - 64ms/epoch - 21ms/step\n",
            "Epoch 74/300\n",
            "3/3 - 0s - loss: 2.0137e-04 - 62ms/epoch - 21ms/step\n",
            "Epoch 75/300\n",
            "3/3 - 0s - loss: 1.9029e-04 - 63ms/epoch - 21ms/step\n",
            "Epoch 76/300\n",
            "3/3 - 0s - loss: 2.3399e-04 - 61ms/epoch - 20ms/step\n",
            "Epoch 77/300\n",
            "3/3 - 0s - loss: 1.6982e-04 - 61ms/epoch - 20ms/step\n",
            "Epoch 78/300\n",
            "3/3 - 0s - loss: 2.1281e-04 - 70ms/epoch - 23ms/step\n",
            "Epoch 79/300\n",
            "3/3 - 0s - loss: 1.4876e-04 - 72ms/epoch - 24ms/step\n",
            "Epoch 80/300\n",
            "3/3 - 0s - loss: 1.7495e-04 - 70ms/epoch - 23ms/step\n",
            "Epoch 81/300\n",
            "3/3 - 0s - loss: 2.7080e-04 - 69ms/epoch - 23ms/step\n",
            "Epoch 82/300\n",
            "3/3 - 0s - loss: 1.9818e-04 - 67ms/epoch - 22ms/step\n",
            "Epoch 83/300\n",
            "3/3 - 0s - loss: 2.4312e-04 - 70ms/epoch - 23ms/step\n",
            "Epoch 84/300\n",
            "3/3 - 0s - loss: 1.9749e-04 - 62ms/epoch - 21ms/step\n",
            "Epoch 85/300\n",
            "3/3 - 0s - loss: 1.6143e-04 - 62ms/epoch - 21ms/step\n",
            "Epoch 86/300\n",
            "3/3 - 0s - loss: 2.0287e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 87/300\n",
            "3/3 - 0s - loss: 1.0663e-04 - 62ms/epoch - 21ms/step\n",
            "Epoch 88/300\n",
            "3/3 - 0s - loss: 9.8392e-05 - 62ms/epoch - 21ms/step\n",
            "Epoch 89/300\n",
            "3/3 - 0s - loss: 1.1152e-04 - 61ms/epoch - 20ms/step\n",
            "Epoch 90/300\n",
            "3/3 - 0s - loss: 1.8909e-04 - 61ms/epoch - 20ms/step\n",
            "Epoch 91/300\n",
            "3/3 - 0s - loss: 1.5054e-04 - 65ms/epoch - 22ms/step\n",
            "Epoch 92/300\n",
            "3/3 - 0s - loss: 1.3264e-04 - 68ms/epoch - 23ms/step\n",
            "Epoch 93/300\n",
            "3/3 - 0s - loss: 1.0575e-04 - 68ms/epoch - 23ms/step\n",
            "Epoch 94/300\n",
            "3/3 - 0s - loss: 8.4681e-05 - 60ms/epoch - 20ms/step\n",
            "Epoch 95/300\n",
            "3/3 - 0s - loss: 1.4757e-04 - 63ms/epoch - 21ms/step\n",
            "Epoch 96/300\n",
            "3/3 - 0s - loss: 1.0249e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 97/300\n",
            "3/3 - 0s - loss: 1.2527e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 98/300\n",
            "3/3 - 0s - loss: 1.0802e-04 - 60ms/epoch - 20ms/step\n",
            "Epoch 99/300\n",
            "3/3 - 0s - loss: 1.1949e-04 - 61ms/epoch - 20ms/step\n",
            "Epoch 100/300\n",
            "3/3 - 0s - loss: 7.9805e-05 - 69ms/epoch - 23ms/step\n",
            "Epoch 101/300\n",
            "3/3 - 0s - loss: 8.4214e-05 - 69ms/epoch - 23ms/step\n",
            "Epoch 102/300\n",
            "3/3 - 0s - loss: 9.5588e-05 - 67ms/epoch - 22ms/step\n",
            "Epoch 103/300\n",
            "3/3 - 0s - loss: 7.7291e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 104/300\n",
            "3/3 - 0s - loss: 5.4540e-05 - 67ms/epoch - 22ms/step\n",
            "Epoch 105/300\n",
            "3/3 - 0s - loss: 4.2261e-05 - 63ms/epoch - 21ms/step\n",
            "Epoch 106/300\n",
            "3/3 - 0s - loss: 3.5622e-05 - 71ms/epoch - 24ms/step\n",
            "Epoch 107/300\n",
            "3/3 - 0s - loss: 3.7094e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 108/300\n",
            "3/3 - 0s - loss: 3.8080e-05 - 71ms/epoch - 24ms/step\n",
            "Epoch 109/300\n",
            "3/3 - 0s - loss: 4.5161e-05 - 63ms/epoch - 21ms/step\n",
            "Epoch 110/300\n",
            "3/3 - 0s - loss: 5.7170e-05 - 61ms/epoch - 20ms/step\n",
            "Epoch 111/300\n",
            "3/3 - 0s - loss: 5.3417e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 112/300\n",
            "3/3 - 0s - loss: 3.0292e-05 - 63ms/epoch - 21ms/step\n",
            "Epoch 113/300\n",
            "3/3 - 0s - loss: 3.4851e-05 - 71ms/epoch - 24ms/step\n",
            "Epoch 114/300\n",
            "3/3 - 0s - loss: 2.5647e-05 - 67ms/epoch - 22ms/step\n",
            "Epoch 115/300\n",
            "3/3 - 0s - loss: 2.3945e-05 - 59ms/epoch - 20ms/step\n",
            "Epoch 116/300\n",
            "3/3 - 0s - loss: 3.4859e-05 - 64ms/epoch - 21ms/step\n",
            "Epoch 117/300\n",
            "3/3 - 0s - loss: 4.2131e-05 - 63ms/epoch - 21ms/step\n",
            "Epoch 118/300\n",
            "3/3 - 0s - loss: 2.2111e-05 - 58ms/epoch - 19ms/step\n",
            "Epoch 119/300\n",
            "3/3 - 0s - loss: 2.3528e-05 - 61ms/epoch - 20ms/step\n",
            "Epoch 120/300\n",
            "3/3 - 0s - loss: 2.1368e-05 - 61ms/epoch - 20ms/step\n",
            "Epoch 121/300\n",
            "3/3 - 0s - loss: 2.1222e-05 - 60ms/epoch - 20ms/step\n",
            "Epoch 122/300\n",
            "3/3 - 0s - loss: 2.0732e-05 - 74ms/epoch - 25ms/step\n",
            "Epoch 123/300\n",
            "3/3 - 0s - loss: 2.7449e-05 - 69ms/epoch - 23ms/step\n",
            "Epoch 124/300\n",
            "3/3 - 0s - loss: 2.7931e-05 - 64ms/epoch - 21ms/step\n",
            "Epoch 125/300\n",
            "3/3 - 0s - loss: 2.8563e-05 - 64ms/epoch - 21ms/step\n",
            "Epoch 126/300\n",
            "3/3 - 0s - loss: 2.8552e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 127/300\n",
            "3/3 - 0s - loss: 4.2394e-05 - 61ms/epoch - 20ms/step\n",
            "Epoch 128/300\n",
            "3/3 - 0s - loss: 1.9229e-05 - 61ms/epoch - 20ms/step\n",
            "Epoch 129/300\n",
            "3/3 - 0s - loss: 1.3782e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 130/300\n",
            "3/3 - 0s - loss: 1.1021e-05 - 60ms/epoch - 20ms/step\n",
            "Epoch 131/300\n",
            "3/3 - 0s - loss: 1.2872e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 132/300\n",
            "3/3 - 0s - loss: 9.0820e-06 - 68ms/epoch - 23ms/step\n",
            "Epoch 133/300\n",
            "3/3 - 0s - loss: 1.5221e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 134/300\n",
            "3/3 - 0s - loss: 2.0174e-05 - 63ms/epoch - 21ms/step\n",
            "Epoch 135/300\n",
            "3/3 - 0s - loss: 1.7017e-05 - 59ms/epoch - 20ms/step\n",
            "Epoch 136/300\n",
            "3/3 - 0s - loss: 1.5268e-05 - 64ms/epoch - 21ms/step\n",
            "Epoch 137/300\n",
            "3/3 - 0s - loss: 1.2807e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 138/300\n",
            "3/3 - 0s - loss: 1.3712e-05 - 72ms/epoch - 24ms/step\n",
            "Epoch 139/300\n",
            "3/3 - 0s - loss: 1.5667e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 140/300\n",
            "3/3 - 0s - loss: 1.2764e-05 - 64ms/epoch - 21ms/step\n",
            "Epoch 141/300\n",
            "3/3 - 0s - loss: 9.7255e-06 - 66ms/epoch - 22ms/step\n",
            "Epoch 142/300\n",
            "3/3 - 0s - loss: 8.5992e-06 - 67ms/epoch - 22ms/step\n",
            "Epoch 143/300\n",
            "3/3 - 0s - loss: 6.5683e-06 - 60ms/epoch - 20ms/step\n",
            "Epoch 144/300\n",
            "3/3 - 0s - loss: 9.2477e-06 - 63ms/epoch - 21ms/step\n",
            "Epoch 145/300\n",
            "3/3 - 0s - loss: 7.4433e-06 - 57ms/epoch - 19ms/step\n",
            "Epoch 146/300\n",
            "3/3 - 0s - loss: 8.8621e-06 - 66ms/epoch - 22ms/step\n",
            "Epoch 147/300\n",
            "3/3 - 0s - loss: 5.1803e-06 - 62ms/epoch - 21ms/step\n",
            "Epoch 148/300\n",
            "3/3 - 0s - loss: 5.1778e-06 - 62ms/epoch - 21ms/step\n",
            "Epoch 149/300\n",
            "3/3 - 0s - loss: 6.7214e-06 - 67ms/epoch - 22ms/step\n",
            "Epoch 150/300\n",
            "3/3 - 0s - loss: 6.1736e-06 - 61ms/epoch - 20ms/step\n",
            "Epoch 151/300\n",
            "3/3 - 0s - loss: 6.8803e-06 - 62ms/epoch - 21ms/step\n",
            "Epoch 152/300\n",
            "3/3 - 0s - loss: 4.8298e-06 - 62ms/epoch - 21ms/step\n",
            "Epoch 153/300\n",
            "3/3 - 0s - loss: 5.1580e-06 - 72ms/epoch - 24ms/step\n",
            "Epoch 154/300\n",
            "3/3 - 0s - loss: 5.2785e-06 - 60ms/epoch - 20ms/step\n",
            "Epoch 155/300\n",
            "3/3 - 0s - loss: 3.4668e-06 - 65ms/epoch - 22ms/step\n",
            "Epoch 156/300\n",
            "3/3 - 0s - loss: 3.3634e-06 - 60ms/epoch - 20ms/step\n",
            "Epoch 157/300\n",
            "3/3 - 0s - loss: 2.7410e-06 - 65ms/epoch - 22ms/step\n",
            "Epoch 158/300\n",
            "3/3 - 0s - loss: 4.4222e-06 - 61ms/epoch - 20ms/step\n",
            "Epoch 159/300\n",
            "3/3 - 0s - loss: 3.6640e-06 - 60ms/epoch - 20ms/step\n",
            "Epoch 160/300\n",
            "3/3 - 0s - loss: 2.7770e-06 - 59ms/epoch - 20ms/step\n",
            "Epoch 161/300\n",
            "3/3 - 0s - loss: 2.3425e-06 - 66ms/epoch - 22ms/step\n",
            "Epoch 162/300\n",
            "3/3 - 0s - loss: 2.6311e-06 - 63ms/epoch - 21ms/step\n",
            "Epoch 163/300\n",
            "3/3 - 0s - loss: 2.6700e-06 - 69ms/epoch - 23ms/step\n",
            "Epoch 164/300\n",
            "3/3 - 0s - loss: 2.7517e-06 - 56ms/epoch - 19ms/step\n",
            "Epoch 165/300\n",
            "3/3 - 0s - loss: 2.9009e-06 - 69ms/epoch - 23ms/step\n",
            "Epoch 166/300\n",
            "3/3 - 0s - loss: 2.4295e-06 - 58ms/epoch - 19ms/step\n",
            "Epoch 167/300\n",
            "3/3 - 0s - loss: 2.8629e-06 - 68ms/epoch - 23ms/step\n",
            "Epoch 168/300\n",
            "3/3 - 0s - loss: 3.9074e-06 - 64ms/epoch - 21ms/step\n",
            "Epoch 169/300\n",
            "3/3 - 0s - loss: 2.6724e-06 - 70ms/epoch - 23ms/step\n",
            "Epoch 170/300\n",
            "3/3 - 0s - loss: 2.4635e-06 - 67ms/epoch - 22ms/step\n",
            "Epoch 171/300\n",
            "3/3 - 0s - loss: 2.5884e-06 - 66ms/epoch - 22ms/step\n",
            "Epoch 172/300\n",
            "3/3 - 0s - loss: 2.4912e-06 - 66ms/epoch - 22ms/step\n",
            "Epoch 173/300\n",
            "3/3 - 0s - loss: 2.5674e-06 - 66ms/epoch - 22ms/step\n",
            "Epoch 174/300\n",
            "3/3 - 0s - loss: 3.0989e-06 - 59ms/epoch - 20ms/step\n",
            "Epoch 175/300\n",
            "3/3 - 0s - loss: 4.3497e-06 - 68ms/epoch - 23ms/step\n",
            "Epoch 176/300\n",
            "3/3 - 0s - loss: 3.1839e-06 - 69ms/epoch - 23ms/step\n",
            "Epoch 177/300\n",
            "3/3 - 0s - loss: 3.6191e-06 - 68ms/epoch - 23ms/step\n",
            "Epoch 178/300\n",
            "3/3 - 0s - loss: 5.7011e-06 - 63ms/epoch - 21ms/step\n",
            "Epoch 179/300\n",
            "3/3 - 0s - loss: 6.6585e-06 - 63ms/epoch - 21ms/step\n",
            "Epoch 180/300\n",
            "3/3 - 0s - loss: 3.9014e-06 - 64ms/epoch - 21ms/step\n",
            "Epoch 181/300\n",
            "3/3 - 0s - loss: 5.5833e-06 - 59ms/epoch - 20ms/step\n",
            "Epoch 182/300\n",
            "3/3 - 0s - loss: 4.8671e-06 - 66ms/epoch - 22ms/step\n",
            "Epoch 183/300\n",
            "3/3 - 0s - loss: 4.5725e-06 - 66ms/epoch - 22ms/step\n",
            "Epoch 184/300\n",
            "3/3 - 0s - loss: 5.7762e-06 - 59ms/epoch - 20ms/step\n",
            "Epoch 185/300\n",
            "3/3 - 0s - loss: 5.1042e-06 - 66ms/epoch - 22ms/step\n",
            "Epoch 186/300\n",
            "3/3 - 0s - loss: 5.0049e-06 - 59ms/epoch - 20ms/step\n",
            "Epoch 187/300\n",
            "3/3 - 0s - loss: 7.2159e-06 - 68ms/epoch - 23ms/step\n",
            "Epoch 188/300\n",
            "3/3 - 0s - loss: 4.2282e-06 - 68ms/epoch - 23ms/step\n",
            "Epoch 189/300\n",
            "3/3 - 0s - loss: 5.6157e-06 - 67ms/epoch - 22ms/step\n",
            "Epoch 190/300\n",
            "3/3 - 0s - loss: 5.8202e-06 - 61ms/epoch - 20ms/step\n",
            "Epoch 191/300\n",
            "3/3 - 0s - loss: 7.2778e-06 - 65ms/epoch - 22ms/step\n",
            "Epoch 192/300\n",
            "3/3 - 0s - loss: 9.1630e-06 - 63ms/epoch - 21ms/step\n",
            "Epoch 193/300\n",
            "3/3 - 0s - loss: 1.3989e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 194/300\n",
            "3/3 - 0s - loss: 1.0096e-05 - 60ms/epoch - 20ms/step\n",
            "Epoch 195/300\n",
            "3/3 - 0s - loss: 8.8134e-06 - 68ms/epoch - 23ms/step\n",
            "Epoch 196/300\n",
            "3/3 - 0s - loss: 9.6478e-06 - 59ms/epoch - 20ms/step\n",
            "Epoch 197/300\n",
            "3/3 - 0s - loss: 1.9950e-05 - 60ms/epoch - 20ms/step\n",
            "Epoch 198/300\n",
            "3/3 - 0s - loss: 2.4674e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 199/300\n",
            "3/3 - 0s - loss: 2.3085e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 200/300\n",
            "3/3 - 0s - loss: 1.8742e-05 - 69ms/epoch - 23ms/step\n",
            "Epoch 201/300\n",
            "3/3 - 0s - loss: 2.5001e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 202/300\n",
            "3/3 - 0s - loss: 1.8211e-05 - 69ms/epoch - 23ms/step\n",
            "Epoch 203/300\n",
            "3/3 - 0s - loss: 1.1981e-05 - 67ms/epoch - 22ms/step\n",
            "Epoch 204/300\n",
            "3/3 - 0s - loss: 9.0654e-06 - 67ms/epoch - 22ms/step\n",
            "Epoch 205/300\n",
            "3/3 - 0s - loss: 6.4363e-06 - 61ms/epoch - 20ms/step\n",
            "Epoch 206/300\n",
            "3/3 - 0s - loss: 5.5818e-06 - 74ms/epoch - 25ms/step\n",
            "Epoch 207/300\n",
            "3/3 - 0s - loss: 3.8820e-06 - 69ms/epoch - 23ms/step\n",
            "Epoch 208/300\n",
            "3/3 - 0s - loss: 5.0283e-06 - 72ms/epoch - 24ms/step\n",
            "Epoch 209/300\n",
            "3/3 - 0s - loss: 8.4273e-06 - 61ms/epoch - 20ms/step\n",
            "Epoch 210/300\n",
            "3/3 - 0s - loss: 7.4062e-06 - 65ms/epoch - 22ms/step\n",
            "Epoch 211/300\n",
            "3/3 - 0s - loss: 7.8372e-06 - 72ms/epoch - 24ms/step\n",
            "Epoch 212/300\n",
            "3/3 - 0s - loss: 8.1435e-06 - 71ms/epoch - 24ms/step\n",
            "Epoch 213/300\n",
            "3/3 - 0s - loss: 9.5316e-06 - 67ms/epoch - 22ms/step\n",
            "Epoch 214/300\n",
            "3/3 - 0s - loss: 6.1268e-06 - 73ms/epoch - 24ms/step\n",
            "Epoch 215/300\n",
            "3/3 - 0s - loss: 1.2144e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 216/300\n",
            "3/3 - 0s - loss: 1.2071e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 217/300\n",
            "3/3 - 0s - loss: 7.5969e-06 - 64ms/epoch - 21ms/step\n",
            "Epoch 218/300\n",
            "3/3 - 0s - loss: 1.0336e-05 - 63ms/epoch - 21ms/step\n",
            "Epoch 219/300\n",
            "3/3 - 0s - loss: 1.7795e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 220/300\n",
            "3/3 - 0s - loss: 2.6499e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 221/300\n",
            "3/3 - 0s - loss: 3.0134e-05 - 61ms/epoch - 20ms/step\n",
            "Epoch 222/300\n",
            "3/3 - 0s - loss: 3.1473e-05 - 62ms/epoch - 21ms/step\n",
            "Epoch 223/300\n",
            "3/3 - 0s - loss: 3.3050e-05 - 61ms/epoch - 20ms/step\n",
            "Epoch 224/300\n",
            "3/3 - 0s - loss: 3.9134e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 225/300\n",
            "3/3 - 0s - loss: 3.8205e-05 - 67ms/epoch - 22ms/step\n",
            "Epoch 226/300\n",
            "3/3 - 0s - loss: 6.4119e-05 - 67ms/epoch - 22ms/step\n",
            "Epoch 227/300\n",
            "3/3 - 0s - loss: 8.2387e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 228/300\n",
            "3/3 - 0s - loss: 5.3437e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 229/300\n",
            "3/3 - 0s - loss: 5.1427e-05 - 59ms/epoch - 20ms/step\n",
            "Epoch 230/300\n",
            "3/3 - 0s - loss: 4.5451e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 231/300\n",
            "3/3 - 0s - loss: 4.8148e-05 - 62ms/epoch - 21ms/step\n",
            "Epoch 232/300\n",
            "3/3 - 0s - loss: 4.0705e-05 - 69ms/epoch - 23ms/step\n",
            "Epoch 233/300\n",
            "3/3 - 0s - loss: 4.5587e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 234/300\n",
            "3/3 - 0s - loss: 4.7415e-05 - 63ms/epoch - 21ms/step\n",
            "Epoch 235/300\n",
            "3/3 - 0s - loss: 2.7569e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 236/300\n",
            "3/3 - 0s - loss: 2.7458e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 237/300\n",
            "3/3 - 0s - loss: 3.6551e-05 - 61ms/epoch - 20ms/step\n",
            "Epoch 238/300\n",
            "3/3 - 0s - loss: 1.1267e-04 - 69ms/epoch - 23ms/step\n",
            "Epoch 239/300\n",
            "3/3 - 0s - loss: 1.6599e-04 - 63ms/epoch - 21ms/step\n",
            "Epoch 240/300\n",
            "3/3 - 0s - loss: 4.0819e-04 - 65ms/epoch - 22ms/step\n",
            "Epoch 241/300\n",
            "3/3 - 0s - loss: 4.0114e-04 - 63ms/epoch - 21ms/step\n",
            "Epoch 242/300\n",
            "3/3 - 0s - loss: 5.4056e-04 - 69ms/epoch - 23ms/step\n",
            "Epoch 243/300\n",
            "3/3 - 0s - loss: 3.9591e-04 - 68ms/epoch - 23ms/step\n",
            "Epoch 244/300\n",
            "3/3 - 0s - loss: 1.5039e-04 - 67ms/epoch - 22ms/step\n",
            "Epoch 245/300\n",
            "3/3 - 0s - loss: 1.7863e-04 - 76ms/epoch - 25ms/step\n",
            "Epoch 246/300\n",
            "3/3 - 0s - loss: 1.7681e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 247/300\n",
            "3/3 - 0s - loss: 9.4763e-05 - 65ms/epoch - 22ms/step\n",
            "Epoch 248/300\n",
            "3/3 - 0s - loss: 9.1032e-05 - 70ms/epoch - 23ms/step\n",
            "Epoch 249/300\n",
            "3/3 - 0s - loss: 8.1500e-05 - 64ms/epoch - 21ms/step\n",
            "Epoch 250/300\n",
            "3/3 - 0s - loss: 7.8457e-05 - 66ms/epoch - 22ms/step\n",
            "Epoch 251/300\n",
            "3/3 - 0s - loss: 1.0813e-04 - 65ms/epoch - 22ms/step\n",
            "Epoch 252/300\n",
            "3/3 - 0s - loss: 1.2090e-04 - 68ms/epoch - 23ms/step\n",
            "Epoch 253/300\n",
            "3/3 - 0s - loss: 2.2716e-04 - 68ms/epoch - 23ms/step\n",
            "Epoch 254/300\n",
            "3/3 - 0s - loss: 2.3623e-04 - 68ms/epoch - 23ms/step\n",
            "Epoch 255/300\n",
            "3/3 - 0s - loss: 2.9344e-04 - 64ms/epoch - 21ms/step\n",
            "Epoch 256/300\n",
            "3/3 - 0s - loss: 3.4568e-04 - 67ms/epoch - 22ms/step\n",
            "Epoch 257/300\n",
            "3/3 - 0s - loss: 1.6923e-04 - 64ms/epoch - 21ms/step\n",
            "Epoch 258/300\n",
            "3/3 - 0s - loss: 1.5203e-04 - 63ms/epoch - 21ms/step\n",
            "Epoch 259/300\n",
            "3/3 - 0s - loss: 2.8205e-04 - 62ms/epoch - 21ms/step\n",
            "Epoch 260/300\n",
            "3/3 - 0s - loss: 4.9390e-04 - 67ms/epoch - 22ms/step\n",
            "Epoch 261/300\n",
            "3/3 - 0s - loss: 9.7615e-04 - 64ms/epoch - 21ms/step\n",
            "Epoch 262/300\n",
            "3/3 - 0s - loss: 7.1958e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 263/300\n",
            "3/3 - 0s - loss: 8.7432e-04 - 71ms/epoch - 24ms/step\n",
            "Epoch 264/300\n",
            "3/3 - 0s - loss: 5.4290e-04 - 61ms/epoch - 20ms/step\n",
            "Epoch 265/300\n",
            "3/3 - 0s - loss: 6.6058e-04 - 59ms/epoch - 20ms/step\n",
            "Epoch 266/300\n",
            "3/3 - 0s - loss: 9.9485e-04 - 64ms/epoch - 21ms/step\n",
            "Epoch 267/300\n",
            "3/3 - 0s - loss: 8.0164e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 268/300\n",
            "3/3 - 0s - loss: 3.9285e-04 - 64ms/epoch - 21ms/step\n",
            "Epoch 269/300\n",
            "3/3 - 0s - loss: 4.3320e-04 - 70ms/epoch - 23ms/step\n",
            "Epoch 270/300\n",
            "3/3 - 0s - loss: 3.2744e-04 - 65ms/epoch - 22ms/step\n",
            "Epoch 271/300\n",
            "3/3 - 0s - loss: 2.1986e-04 - 64ms/epoch - 21ms/step\n",
            "Epoch 272/300\n",
            "3/3 - 0s - loss: 4.6565e-04 - 59ms/epoch - 20ms/step\n",
            "Epoch 273/300\n",
            "3/3 - 0s - loss: 4.1062e-04 - 62ms/epoch - 21ms/step\n",
            "Epoch 274/300\n",
            "3/3 - 0s - loss: 3.4097e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 275/300\n",
            "3/3 - 0s - loss: 3.0267e-04 - 55ms/epoch - 18ms/step\n",
            "Epoch 276/300\n",
            "3/3 - 0s - loss: 3.2612e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 277/300\n",
            "3/3 - 0s - loss: 2.8656e-04 - 60ms/epoch - 20ms/step\n",
            "Epoch 278/300\n",
            "3/3 - 0s - loss: 2.0812e-04 - 63ms/epoch - 21ms/step\n",
            "Epoch 279/300\n",
            "3/3 - 0s - loss: 1.8652e-04 - 65ms/epoch - 22ms/step\n",
            "Epoch 280/300\n",
            "3/3 - 0s - loss: 1.8811e-04 - 61ms/epoch - 20ms/step\n",
            "Epoch 281/300\n",
            "3/3 - 0s - loss: 1.5674e-04 - 65ms/epoch - 22ms/step\n",
            "Epoch 282/300\n",
            "3/3 - 0s - loss: 1.5288e-04 - 71ms/epoch - 24ms/step\n",
            "Epoch 283/300\n",
            "3/3 - 0s - loss: 1.1663e-04 - 77ms/epoch - 26ms/step\n",
            "Epoch 284/300\n",
            "3/3 - 0s - loss: 1.6662e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 285/300\n",
            "3/3 - 0s - loss: 1.2908e-04 - 67ms/epoch - 22ms/step\n",
            "Epoch 286/300\n",
            "3/3 - 0s - loss: 1.1439e-04 - 63ms/epoch - 21ms/step\n",
            "Epoch 287/300\n",
            "3/3 - 0s - loss: 8.8700e-05 - 68ms/epoch - 23ms/step\n",
            "Epoch 288/300\n",
            "3/3 - 0s - loss: 1.0886e-04 - 68ms/epoch - 23ms/step\n",
            "Epoch 289/300\n",
            "3/3 - 0s - loss: 1.0184e-04 - 66ms/epoch - 22ms/step\n",
            "Epoch 290/300\n",
            "3/3 - 0s - loss: 1.3935e-04 - 62ms/epoch - 21ms/step\n",
            "Epoch 291/300\n",
            "3/3 - 0s - loss: 1.8236e-04 - 61ms/epoch - 20ms/step\n",
            "Epoch 292/300\n",
            "3/3 - 0s - loss: 1.5071e-04 - 58ms/epoch - 19ms/step\n",
            "Epoch 293/300\n",
            "3/3 - 0s - loss: 1.5873e-04 - 62ms/epoch - 21ms/step\n",
            "Epoch 294/300\n",
            "3/3 - 0s - loss: 1.3669e-04 - 63ms/epoch - 21ms/step\n",
            "Epoch 295/300\n",
            "3/3 - 0s - loss: 1.2172e-04 - 65ms/epoch - 22ms/step\n",
            "Epoch 296/300\n",
            "3/3 - 0s - loss: 1.0999e-04 - 62ms/epoch - 21ms/step\n",
            "Epoch 297/300\n",
            "3/3 - 0s - loss: 1.2121e-04 - 62ms/epoch - 21ms/step\n",
            "Epoch 298/300\n",
            "3/3 - 0s - loss: 8.3802e-05 - 64ms/epoch - 21ms/step\n",
            "Epoch 299/300\n",
            "3/3 - 0s - loss: 4.6163e-05 - 63ms/epoch - 21ms/step\n",
            "Epoch 300/300\n",
            "3/3 - 0s - loss: 4.0020e-05 - 63ms/epoch - 21ms/step\n",
            "14/14 [==============================] - 0s 7ms/step\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<matplotlib.collections.PathCollection at 0x7882f6801f90>"
            ]
          },
          "metadata": {},
          "execution_count": 120
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ],
            "image/png": "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\n"
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "seconds = time.time()\n",
        "print(\"Time in seconds since end of run:\", seconds)\n",
        "local_time = time.ctime(seconds)\n",
        "print(local_time)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 0
        },
        "id": "YyOarWssKyjN",
        "outputId": "545b251d-8584-4343-d443-6e374a2a7291"
      },
      "execution_count": 121,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Time in seconds since end of run: 1710188976.6362703\n",
            "Mon Mar 11 20:29:36 2024\n"
          ]
        }
      ]
    }
  ]
}